# -*- coding: UTF-8 -*-

"""
@author: 肥仔编程
@file:10.py
@time:2021-04-22
"""

"""
    闭包和装饰器的总结
        1. 理解闭包的概念和特点
        2. 熟悉装饰器的用法
"""

"""
    闭包的理解
        在外部函数中定义了内部函数
        外部函数中包含返回值而且返回值是内部函数名
        内部函数中使用了外部函数定义的变量
"""
def parse(a, b):
    c = 1
    def add():
        print(a + b + c)
    return add
# 注意闭包的调用方式，外部方法(参数)()
parse(10, 4)()

"""
    装饰器的用法
"""

def Hi(fn):
    # 无参处理
    # def say():
    #     print("开始介绍")
    #     fn()
    # 带参处理
    def say(name, age):
        print("开始介绍")
        fn(name, age)
    return say

def sayHi_1():
    print("大家好，我是王铁成，今年23")
# Hi(sayHi_1)()

# 包含参数处理
@Hi
def sayHi_2(name, age):
    print(f"大家好，我是{name}，今年{age}")
sayHi_2("张无忌", 23)

